; COMMAND-LINE: --finite-model-find
; EXPECT: sat
(set-option :incremental false)
(set-info :status sat)
(set-logic AUFLIA)
(declare-sort S1 0)
(declare-sort S2 0)
(declare-sort S3 0)
(declare-sort S4 0)
(declare-sort S5 0)
(declare-sort S6 0)
(declare-sort S7 0)
(declare-sort S8 0)
(declare-sort S9 0)
(declare-sort S10 0)
(declare-sort S11 0)
(declare-fun f1 () S1)
(declare-fun f2 () S1)
(declare-fun f3 (S3 S2) S1)
(declare-fun f4 (S4 S2) S3)
(declare-fun f5 () S4)
(declare-fun f6 (S5 S5) S1)
(declare-fun f7 () S5)
(declare-fun f8 (S6 S5) S5)
(declare-fun f9 (S7) S6)
(declare-fun f10 (S8 S4) S7)
(declare-fun f11 (S9 S10) S8)
(declare-fun f12 (S11 S4) S9)
(declare-fun f13 () S11)
(declare-fun f14 () S4)
(declare-fun f15 () S10)
(declare-fun f16 () S4)
(declare-fun f17 (S10) S4)
(declare-fun f18 (S5 S5) S1)
(assert (not (= f1 f2)))
(assert (forall ((?v0 S2) (?v1 S2)) (= (= (f3 (f4 f5 ?v0) ?v1) f1) (= ?v0 ?v1)) ))
(assert (not (= (f6 f7 (f8 (f9 (f10 (f11 (f12 f13 f14) f15) f16)) f7)) f1)))
(assert (= (f6 f7 (f8 (f9 (f10 (f11 (f12 f13 f5) f15) (f17 f15))) f7)) f1))
(assert (= (f18 f7 (f8 (f9 (f10 (f11 (f12 f13 f14) f15) f16)) f7)) f1))
(assert (forall ((?v0 S5)) (= (f6 ?v0 f7) f1) ))
(assert (forall ((?v0 S4) (?v1 S10) (?v2 S4) (?v3 S4) (?v4 S10) (?v5 S4)) (= (= (f10 (f11 (f12 f13 ?v0) ?v1) ?v2) (f10 (f11 (f12 f13 ?v3) ?v4) ?v5)) (and (= ?v0 ?v3) (and (= ?v1 ?v4) (= ?v2 ?v5)))) ))
(assert (forall ((?v0 S5) (?v1 S5)) (=> (= (f6 ?v0 ?v1) f1) (= (f18 ?v0 ?v1) f1)) ))
(assert (forall ((?v0 S5) (?v1 S5) (?v2 S5)) (=> (= (f6 ?v0 ?v1) f1) (=> (= (f6 ?v2 ?v0) f1) (= (f6 ?v2 ?v1) f1))) ))
(assert (forall ((?v0 S5) (?v1 S7) (?v2 S5)) (let ((_let_0 (f9 ?v1))) (=> (= (f6 ?v0 (f8 _let_0 f7)) f1) (=> (= (f6 ?v0 ?v2) f1) (= (f6 ?v0 (f8 _let_0 ?v2)) f1)))) ))
(assert (forall ((?v0 S5) (?v1 S7) (?v2 S5)) (let ((_let_0 (f9 ?v1))) (=> (= (f6 ?v0 (f8 _let_0 ?v2)) f1) (and (= (f6 ?v0 (f8 _let_0 f7)) f1) (= (f6 ?v0 ?v2) f1)))) ))
(assert (forall ((?v0 S5) (?v1 S4) (?v2 S10) (?v3 S4) (?v4 S4)) (let ((_let_0 (f11 (f12 f13 ?v1) ?v2))) (=> (= (f6 ?v0 (f8 (f9 (f10 _let_0 ?v3)) f7)) f1) (=> (forall ((?v5 S2) (?v6 S2)) (=> (= (f3 (f4 ?v3 ?v5) ?v6) f1) (= (f3 (f4 ?v4 ?v5) ?v6) f1)) ) (= (f6 ?v0 (f8 (f9 (f10 _let_0 ?v4)) f7)) f1)))) ))
(assert (forall ((?v0 S5) (?v1 S4) (?v2 S10) (?v3 S4) (?v4 S4)) (=> (= (f6 ?v0 (f8 (f9 (f10 (f11 (f12 f13 ?v1) ?v2) ?v3)) f7)) f1) (=> (forall ((?v5 S2) (?v6 S2)) (=> (= (f3 (f4 ?v4 ?v5) ?v6) f1) (= (f3 (f4 ?v1 ?v5) ?v6) f1)) ) (= (f6 ?v0 (f8 (f9 (f10 (f11 (f12 f13 ?v4) ?v2) ?v3)) f7)) f1))) ))
(check-sat-assuming ( true ))
